Files API
The Files API lets you upload and manage files to use with the Anthropic API without re-uploading content with each request. This is particularly useful when using the code execution tool to provide inputs (e.g. datasets and documents) and then download outputs (e.g. charts). You can also use the Files API to prevent having to continually re-upload frequently used documents and images across multiple API calls.
The Files API is currently in beta. Please reach out through our feedback form to share your experience with the Files API.
Supported models
Referencing a file_id
in a Messages request is supported in all models that support the given file type. For example, images are supported in all Claude 3+ models, PDFs in all Claude 3.5+ models, and various other file types for the code execution tool in Claude 3.5 Haiku plus all Claude 3.7+ models.
The Files API is currently not supported on Amazon Bedrock or Google Vertex AI.
How the Files API works
The Files API provides a simple create-once, use-many-times approach for working with files:
- Upload files to our secure storage and receive a unique
file_id
- Download files that are created from the code execution tool
- Reference files in Messages requests using the
file_id
instead of re-uploading content - Manage your files with list, retrieve, and delete operations
How to use the Files API
To use the Files API, you’ll need to include the beta feature header: anthropic-beta: files-api-2025-04-14
.
Uploading a file
Upload a file to be referenced in future API calls:
Using a file in messages
Once uploaded, reference the file using its file_id
:
File types and content blocks
The Files API supports different file types that correspond to different content block types:
File Type | MIME Type | Content Block Type | Use Case |
---|---|---|---|
application/pdf | document | Text analysis, document processing | |
Plain text | text/plain | document | Text analysis, processing |
Images | image/jpeg , image/png , image/gif , image/webp | image | Image analysis, visual tasks |
Datasets, others | Varies | container_upload | Analyze data, create visualizations |
Document blocks
For PDFs and text files, use the document
content block:
Image blocks
For images, use the image
content block:
Managing files
List files
Retrieve a list of your uploaded files:
Get file metadata
Retrieve information about a specific file:
Delete a file
Remove a file from your workspace:
Downloading a file
Download files that have been created by the code execution tool:
You can only download files that were created by the code execution tool. Files that you uploaded cannot be downloaded.
File storage and limits
Storage limits
- Maximum file size: 500 MB per file
- Total storage: 100 GB per organization
File lifecycle
- Files are scoped to the workspace of the API key. Other API keys can use files created by any other API key associated with the same workspace
- Files persist until you delete them
- Deleted files cannot be recovered
- Files are inaccessible via the API shortly after deletion, but they may persist in active
Messages
API calls and associated tool uses
Error handling
Common errors when using the Files API include:
- File not found (404): The specified
file_id
doesn’t exist or you don’t have access to it - Invalid file type (400): The file type doesn’t match the content block type (e.g., using an image file in a document block)
- Exceeds context window size (400): The file is larger than the context window size (e.g. using a 500 MB plaintext file in a
/v1/messages
request) - Invalid filename (400): Filename doesn’t meet the length requirements (1-255 characters) or contains forbidden characters (
<
,>
,:
,"
,|
,?
,*
,\
,/
, or unicode characters 0-31) - File too large (413): File exceeds the 500 MB limit
- Storage limit exceeded (403): Your organization has reached the 100 GB storage limit
Usage and billing
File API operations are free:
- Uploading files
- Downloading files
- Listing files
- Getting file metadata
- Deleting files
File content used in Messages
requests are priced as input tokens. You can only download files created by the code execution tool.
Rate limits
During the beta period:
- File-related API calls are limited to approximately 100 requests per minute
- Contact us if you need higher limits for your use case